﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;

namespace 命令模式
{
    /// <summary>
    /// 1 命令模式介绍和例子
    /// 2 命令模式实现异步队列
    /// 3 数据恢复、命令撤销
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            Document document = new Document();
            
            while (true)
            {
                string input = Console.ReadLine();
                string action = ConfigurationManager.AppSettings[input];
  
                BaseCommand command = (BaseCommand)Activator.CreateInstance(action.Split(',')[1], action.Split(',')[0]).Unwrap();
                //保存了一个买票的命令，然后告诉用户在排队了


                //后台在运行，给你指定票或者没有票
                Receiver receiver = new Receiver();
                command.SetReceiver(receiver);
                command.Set(document);

                ///命令执行，调用者
                Invoker invoker = new Invoker(command);
                invoker.Excute();
                //保存了一个买票的命令，然后告诉用户在排队了



                //后台在运行，给你指定票或者没有票
            }
            Console.Read();
        }
    }
}
